package com.echronos.payment.commons.cpcn.util;

import com.alibaba.fastjson.JSONObject;

/**
 * @Author wangyadong
 * @Date 2023年10月25日11:44
 * @ClassName CpcnPayRequest
 */
public interface CpcnPayRequest<T extends CpcnResponse> {
    /**
     * 业务编码
     *
     * @return
     */
    String getTxCode();

    /**
     * 中金远程网关调用接口地址
     *
     * @return
     */
    String cpcnGatewayUrl();

    /**
     * 得到当前API的响应结果类型
     *
     * @return 响应类型
     */
    Class<T> getResponseClass();

    /**
     * 业务
     *
     * @return
     */
    CpcnObject getBizModel();

    /**
     * 设置业务实体，如需使用此方法
     *
     * @param bizModel
     */
    void setBizModel(CpcnObject bizModel);


    /**
     * 组装获取到业务数据
     *
     * @return
     */
    JSONObject getBusinessBiz();

    /**
     * 数据解密封装
     *
     * @param responseMessage
     * @param responseSignature
     * @return
     */
    JSONObject verifier(String responseMessage, String responseSignature);
}
